From 18048308e48e2b8f72162bd76e3229f186e68b41 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Mon, 20 Jul 2009 23:18:41 +0200 Subject: [PATCH] Revert all handling of clip_region being unset for non-viewable windows This is now handled by explicitly setting it to empty for all non-viewable windows. This reverts these commits: 82e609c2a025224921908e3a0e7472256e7e1269 36861cf6088442bfe438be6b48a1b19c85c61a01 454160ad9e39e75d9c37dd43f445b8b3540bba57 7adf894a29d87ba85f0d27f71e2480caf53dae79 ed2c83757417a1ca19bb54f11b74c8fd93ef81c0 --- gdk/gdkwindow.c | 41 ++++++++++++++--------------------------- 1 file changed, 14 insertions(+), 27 deletions(-) diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 9e64a4d0c2..ad8ac06de5 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -795,11 +795,7 @@ recompute_visible_regions_internal (GdkWindowObject *private, new_clip = gdk_region_rectangle (&r); if (private->parent != NULL && - private->parent->window_type != GDK_WINDOW_ROOT && - /* For foreign children, don't remove local parents, as parent - may not be mapped yet, and the non-native parents are not really - enforced for it anyways. */ - private->window_type != GDK_WINDOW_FOREIGN) + private->parent->window_type != GDK_WINDOW_ROOT) { gdk_region_intersect (new_clip, private->parent->clip_region); @@ -1598,8 +1594,7 @@ gdk_window_ensure_native (GdkWindow *window) /* The shape may not have been set, as the clip region doesn't actually change, so do it here manually */ - if (private->viewable) - GDK_WINDOW_IMPL_GET_IFACE (private->impl)->shape_combine_region ((GdkWindow *)private, private->clip_region, 0, 0); + GDK_WINDOW_IMPL_GET_IFACE (private->impl)->shape_combine_region ((GdkWindow *)private, private->clip_region, 0, 0); reparent_to_impl (private); @@ -2480,10 +2475,10 @@ gdk_window_begin_paint_region (GdkWindow *window, implicit_paint = impl_window->implicit_paint; paint = g_new (GdkWindowPaint, 1); - paint->region = gdk_window_get_visible_region ((GdkDrawable *)window); - gdk_region_intersect (paint->region, region); + paint->region = gdk_region_copy (region); paint->region_tag = new_region_tag (); + gdk_region_intersect (paint->region, private->clip_region_with_children); gdk_region_get_clipbox (paint->region, &clip_box); /* Convert to impl coords */ @@ -2646,9 +2641,6 @@ gdk_window_end_paint (GdkWindow *window) private->paint_stack = g_slist_delete_link (private->paint_stack, private->paint_stack); - if (!private->viewable) - goto non_viewable; - gdk_region_get_clipbox (paint->region, &clip_box); tmp_gc = _gdk_drawable_get_scratch_gc (window, FALSE); @@ -2688,8 +2680,6 @@ gdk_window_end_paint (GdkWindow *window) /* Reset clip region of the cached GdkGC */ gdk_gc_set_clip_region (tmp_gc, NULL); - non_viewable: - cairo_surface_destroy (paint->surface); g_object_unref (paint->pixmap); gdk_region_destroy (paint->region); @@ -3503,24 +3493,13 @@ gdk_window_get_composite_drawable (GdkDrawable *drawable, return tmp_pixmap; } -static GdkRegion* -gdk_window_get_visible_region (GdkDrawable *drawable) -{ - GdkWindowObject *private = (GdkWindowObject*) drawable; - - if (private->viewable) - return gdk_region_copy (private->clip_region); - else - return gdk_region_new (); -} - static GdkRegion* gdk_window_get_clip_region (GdkDrawable *drawable) { GdkWindowObject *private = (GdkWindowObject *)drawable; GdkRegion *result; - result = gdk_window_get_visible_region (drawable); + result = gdk_region_copy (private->clip_region); if (private->paint_stack) { @@ -3543,6 +3522,14 @@ gdk_window_get_clip_region (GdkDrawable *drawable) return result; } +static GdkRegion* +gdk_window_get_visible_region (GdkDrawable *drawable) +{ + GdkWindowObject *private = (GdkWindowObject*) drawable; + + return gdk_region_copy (private->clip_region); +} + static void gdk_window_draw_drawable (GdkDrawable *drawable, GdkGC *gc, @@ -7295,7 +7282,7 @@ gdk_window_shape_combine_region (GdkWindow *window, gdk_region_destroy (private->shape); old_region = NULL; - if (private->viewable) + if (GDK_WINDOW_IS_MAPPED (window)) old_region = gdk_region_copy (private->clip_region); if (shape_region) -- 2.30.2